using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using UniversalAdmin.Application.Dto;
using UniversalAdmin.Application.Commands;

namespace UniversalAdmin.Application.Services
{
    public interface IAppMenuService
    {
        Task<ApiResult<PagedResult<MenuDto>>> GetPagedAsync(PagedQuery query);
        Task<ApiResult<IEnumerable<MenuDto>>> GetAllAsync(string? search = null);
        Task<ApiResult<MenuDto>> GetByIdAsync(Guid id);
        Task<ApiResult<MenuDto>> CreateAsync(CreateMenuDto dto);
        Task<ApiResult<MenuDto>> UpdateAsync(Guid id, UpdateMenuDto dto);
        Task<ApiResult> DeleteAsync(Guid id);
        Task<ApiResult> EnableAsync(Guid id);
        Task<ApiResult> DisableAsync(Guid id);
        Task<ApiResult> AssignRolesAsync(AssignMenuRolesDto dto);
    }
} 